#!/usr/bin/env python3
"""
b43-tools MCP Server

面向 b43-tools 软件包的 MCP 服务器，提供对 b43-tools 命令行工具的封装。
b43-tools 是一组用于 Broadcom B43 无线网卡固件处理的工具集。

MCP tools 列表：
- b43_asm_help: 获取 b43-asm 工具的帮助信息
- b43_dasm_help: 获取 b43-dasm 工具的帮助信息
- b43_beautifier_help: 获取 b43-beautifier 工具的帮助信息
- b43_fwdump_help: 获取 b43-fwdump 工具的帮助信息
- ssb_sprom_help: 获取 ssb-sprom 工具的帮助信息
- ssb_sprom_version: 获取 ssb-sprom 工具的版本信息

所有工具返回统一的 JSON 结构：
{
  "success": bool,      # 命令是否成功执行
  "command": str,       # 实际执行的命令
  "exit_code": int,     # 命令退出码
  "stdout": str,        # 标准输出内容
  "stderr": str         # 标准错误内容
}
"""

import subprocess
from mcp.server.fastmcp import FastMCP, Context

mcp = FastMCP("b43-tools MCP Server")

@mcp.tool()
def b43_asm_help(help_option: str = "-h") -> dict:
    """
    获取 b43-asm 工具的帮助信息
    
    参数:
        help_option: 帮助选项，默认为 "-h"，也可使用 "--help"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["b43-asm", help_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def b43_dasm_help(help_option: str = "-h") -> dict:
    """
    获取 b43-dasm 工具的帮助信息
    
    参数:
        help_option: 帮助选项，默认为 "-h"，也可使用 "--help"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["b43-dasm", help_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def b43_beautifier_help(help_option: str = "-h") -> dict:
    """
    获取 b43-beautifier 工具的帮助信息
    
    参数:
        help_option: 帮助选项，默认为 "-h"，也可使用 "--help"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["b43-beautifier", help_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def b43_fwdump_help(help_option: str = "-h") -> dict:
    """
    获取 b43-fwdump 工具的帮助信息
    
    参数:
        help_option: 帮助选项，默认为 "-h"，也可使用 "--help"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["b43-fwdump", help_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def ssb_sprom_help(help_option: str = "-h") -> dict:
    """
    获取 ssb-sprom 工具的帮助信息
    
    参数:
        help_option: 帮助选项，默认为 "-h"，也可使用 "--help"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["ssb-sprom", help_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def ssb_sprom_version(version_option: str = "-v") -> dict:
    """
    获取 ssb-sprom 工具的版本信息
    
    参数:
        version_option: 版本选项，默认为 "-v"，也可使用 "--version"
    
    返回:
        JSON 结构包含命令执行结果
    """
    cmd = ["ssb-sprom", version_option]
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(cmd),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

if __name__ == "__main__":
    mcp.run()